#ifndef USERMYSQLS_H
#define USERMYSQLS_H

#include <QMainWindow>
#include<QSqlDatabase>//QSqlDatabase类处理与数据库的连接，要使用这个类，头文件需要导入QSqlDatabase库：
#include<QSqlQueryModel>//t中使用了自己的机制来避免使用SQL语句，为开发者提供了更简单的数据库操作及数据显示模型，
//分别是只读的QSqlQueryModel，操作单表的QSqlTableModel
//以及可以支持外键的QSqlRelationalTableModel。
#include <QAbstractButton>  // 添加此行
#include<QMessageBox>//消息对话框
#include<QDebug>
#include <QSqlQuery>
#include<QSqlError>

#include <QSqlTableModel>
#include <QTableView>
#include <QHeaderView>
#include <QVBoxLayout>
#include"modbusmanger.h"
#include "monitordevice.h"

#include "xlsxdocument.h"     // QXlsx::Document
#include "xlsxformat.h"       // QXlsx::Format
#include "xlsxworksheet.h"    // QXlsx::Worksheet
#include <QFileDialog>
#include <QAbstractItemModel>

using namespace QXlsx;


struct UserInfo;
struct sensorData;
namespace Ui {
class UserMysqlS;
}
class SensorThresholdData;
class UserMysqlS : public QMainWindow
{
    Q_OBJECT

public:
    explicit UserMysqlS(QWidget *parent = nullptr);
    ~UserMysqlS();
    static UserMysqlS* instance();

    void connect();//
    bool getUserData(QVector<UserInfo> &users);
    bool saveUserData(UserInfo&user);
    bool saveSensorData(sensorData&data);
    bool getSensorData(QVector<sensorData>&datas);
    bool deleteUserData(const int id);
    int changeUserInformation(const UserInfo &Data);
    int getSensorThresholdParameters(int id,QString columnName);
    bool setSensorThresholdParameters(int id,QString columnName,int num,QString whatHappend="无",int choice=0);
    int getPidParameters(int id,QString columnName);
    bool setPidParameters(int id,QString columnName,int num);
    QSqlDatabase &getDataBase();
    bool getSensorThresholdData(QVector<SensorThresholdData> &Data);//用来获取传感器的报警上限和下限值
    void test();
    int getAdminCount();
    bool  getPidSetPointValue();
    bool getSensorWarningTimes();//获取传感器的报警次数
    bool updateSensorWarningTimes();//更新传感器的报警次数到数据库当中
    bool getTimeCycleSets();
    bool updateTimeCycleSets(int id);
   QString byIdGetUserName(const int id);
   int byIdGetUserType(const int id);
   void disPlayTabel(int index);
   void setCurrentTabelView(int index);
   void setTabelViewEnabled(int index,bool status);//设置页面使能
   void exportTableViewToExcel(QTableView *tableView);
signals :
void sendPidSetPointValueChanged(int id);//发送PId id号为"id"的设定值已改变
private slots:
void on_tabWidget_tabBarClicked(int index);
void on_pushButtonBack_clicked();

void on_pushButtonRefresh_clicked();

void on_pushButtonExportExcel_clicked();

private:
void refreshTableView(int index);
private:
    Ui::UserMysqlS *ui;
    //QSqlDatabase 是 Qt SQL 模块中用于表示数据库连接的类。它提供了连接到数据库、执行 SQL 查询和管理数据库连接的功能。
    QSqlDatabase database;
    QSqlTableModel *model[6];
    int currentTableIndex=0;
};

#endif // USERMYSQLS_H
